package com.zang.blogz.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zang.blogz.entity.Tag;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zang.blogz.model.output.TagArticleVO;
import com.zang.blogz.model.output.TagViewVO;
import com.zang.blogz.model.output.admin.AdminTagVO;
import com.zang.blogz.result.Result;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 朵橙i
 * @since 2022-06-17
 */
public interface TagService extends IService<Tag> {

    /**
     * 获取标签页所有信息
     * @return
     */
    TagViewVO getTagViewInfo();

    /**
     * 根据id查询标签下所有文章
     * @param tagId
     * @return
     */
    List<TagArticleVO> getTagArticleVoById(Integer tagId);

    /**
     * 根据文章id查询其标签列表
     */
    List<Tag> getTagListByArticleId(Integer articleId);

    /**
     * 添加或编辑标签
     * @param tag
     * @return
     */
    Tag saveOrEdit(Tag tag);

    /**
     * 获取管理员页标签列表
     * @param tagName
     * @param page
     * @return
     */
    IPage<AdminTagVO> getTagPage(String tagName, Page<Tag> page);

    /**
     * 删除标签
     * @param tagId
     * @return
     */
    Result<String> deleteByTagId(Integer tagId);
}
